package com.woniuxy.tms.accept.domain;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 货运单对象 a_waybill
 *
 * @author dxw
 * @date 2022-04-20
 */
public class Waybill extends MyBaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 运单id,主键自增
     */
    private Long waybillId;

    /**
     * 运单编号
     */
    @Excel(name = "运单编号")
    private String waybillNumber;

    /**
     * 发货人id
     */
    private Long senderId;

    /**
     * 发货人名字
     */
    @Excel(name = "发货人名字")
    private String senderName;

    /**
     * 发货人手机
     */
    @Excel(name = "发货人手机")
    private String senderMobile;

    /**
     * 发货人地址
     */
    @Excel(name = "发货人地址")
    private String senderAddr;

    /**
     * 收货人id
     */
    private Long receiverId;

    /**
     * 收货人名字
     */
    @Excel(name = "收货人名字")
    private String receiverName;

    /**
     * 收货人手机
     */
    @Excel(name = "收货人手机")
    private String receiverMobile;

    /**
     * 收货人地址
     */
    @Excel(name = "收货人地址")
    private String receiverAddr;

    /**
     * 预计发货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "预计发货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date deliveryTime;

    /**
     * 是否代收货款;0表示不代收货款,1表示代收货款
     */
    @Excel(name = "是否代收货款;0表示不代收货款,1表示代收货款")
    private Integer isNeedCollectPayment;

    /**
     * 货款金额
     */
    @Excel(name = "货款金额")
    private Long payment;
    /**
     * 返款类型;返款类型,关系到代收手续费 1表示日退,手续费1.2%,2表示三日退,手续费1.5%
     */
    @Excel(name = "返款类型;返款类型,关系到代收手续费 1表示日退,手续费1.2%,2表示三日退,手续费1.5%")
    private Integer refundType;

    /**
     * 支付方式;0表示先付,1表示货到款
     */
    @Excel(name = "支付方式;0表示先付,1表示货到款")
    private Integer payType;

    /**
     * 是否需要搬运服务;0表示不需要,1表示需要
     */
    @Excel(name = "是否需要搬运服务;0表示不需要,1表示需要")
    private Integer isNeedMovingService;

    /**
     * 减费;以分为单位,方便计算
     */
    @Excel(name = "减费;以分为单位,方便计算")
    private Long reduceFund;

    /**
     * 货物重量
     */
    @Excel(name = "货物重量")
    private Integer goodsWeight;

    /**
     * 货物体积
     */
    @Excel(name = "货物体积")
    private Integer goodsVolume;

    /**
     * 是否包含易碎品,0表示不包含,1表示包含,影响计费
     */
    @Excel(name = "是否包含易碎品,0表示不包含,1表示包含,影响计费")
    private Integer containsFragileGoods;

    /**
     * 货物价值,以分为单位,方便计算
     */
    @Excel(name = "货物价值,以分为单位,方便计算")
    private Long goodsValue;

    /**
     * 货物运费,以分为单位,方便计算
     */
    @Excel(name = "货物运费,以分为单位,方便计算")
    private Long freight;

    /**
     * 货物保险费,以分为单位,方便计算
     */
    @Excel(name = "货物保险费,以分为单位,方便计算")
    private Long premium;

    /**
     * 货物搬运费,以分为单位,方便计算
     */
    @Excel(name = "货物搬运费,以分为单位,方便计算")
    private Long handlingFee;

    /**
     * 运单里程,以0.1公里为单位,方便计算
     */
    @Excel(name = "运单里程,以0.1公里为单位,方便计算")
    private Long distance;

    /**
     * 预计到达时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date estimatedArriveTime;

    /**
     * 货运单状态 1:待发运单,2:未到运单,3:已到运单
     */
    @Excel(name = "货运单状态 1:待发运单,2:未到运单,3:已到运单")
    private Integer waybillStatus;

    /**
     * 备注信息
     */
    @Excel(name = "备注信息")
    private String remarks;


    public void setWaybillId(Long waybillId) {
        this.waybillId = waybillId;
    }

    public Long getWaybillId() {
        return waybillId;
    }

    public void setWaybillNumber(String waybillNumber) {
        this.waybillNumber = waybillNumber;
    }

    public String getWaybillNumber() {
        return waybillNumber;
    }

    public void setSenderId(Long senderId) {
        this.senderId = senderId;
    }

    public Long getSenderId() {
        return senderId;
    }

    public void setSenderName(String senderName) {
        this.senderName = senderName;
    }

    public String getSenderName() {
        return senderName;
    }

    public void setSenderMobile(String senderMobile) {
        this.senderMobile = senderMobile;
    }

    public String getSenderMobile() {
        return senderMobile;
    }

    public void setSenderAddr(String senderAddr) {
        this.senderAddr = senderAddr;
    }

    public String getSenderAddr() {
        return senderAddr;
    }

    public void setReceiverId(Long receiverId) {
        this.receiverId = receiverId;
    }

    public Long getReceiverId() {
        return receiverId;
    }

    public void setReceiverName(String receiverName) {
        this.receiverName = receiverName;
    }

    public String getReceiverName() {
        return receiverName;
    }

    public void setReceiverMobile(String receiverMobile) {
        this.receiverMobile = receiverMobile;
    }

    public String getReceiverMobile() {
        return receiverMobile;
    }

    public void setReceiverAddr(String receiverAddr) {
        this.receiverAddr = receiverAddr;
    }

    public String getReceiverAddr() {
        return receiverAddr;
    }

    public void setDeliveryTime(Date deliveryTime) {
        this.deliveryTime = deliveryTime;
    }

    public Date getDeliveryTime() {
        return deliveryTime;
    }

    public void setIsNeedCollectPayment(Integer isNeedCollectPayment) {
        this.isNeedCollectPayment = isNeedCollectPayment;
    }

    public Integer getIsNeedCollectPayment() {
        return isNeedCollectPayment;
    }

    public void setRefundType(Integer refundType) {
        this.refundType = refundType;
    }

    public Integer getRefundType() {
        return refundType;
    }

    public Long getPayment() {
        return payment;
    }

    public void setPayment(Long payment) {
        this.payment = payment;
    }

    public void setPayType(Integer payType) {
        this.payType = payType;
    }

    public Integer getPayType() {
        return payType;
    }

    public void setIsNeedMovingService(Integer isNeedMovingService) {
        this.isNeedMovingService = isNeedMovingService;
    }

    public Integer getIsNeedMovingService() {
        return isNeedMovingService;
    }

    public void setReduceFund(Long reduceFund) {
        this.reduceFund = reduceFund;
    }

    public Long getReduceFund() {
        return reduceFund;
    }

    public void setGoodsWeight(Integer goodsWeight) {
        this.goodsWeight = goodsWeight;
    }

    public Integer getGoodsWeight() {
        return goodsWeight;
    }

    public void setGoodsVolume(Integer goodsVolume) {
        this.goodsVolume = goodsVolume;
    }

    public Integer getGoodsVolume() {
        return goodsVolume;
    }

    public void setContainsFragileGoods(Integer containsFragileGoods) {
        this.containsFragileGoods = containsFragileGoods;
    }

    public Integer getContainsFragileGoods() {
        return containsFragileGoods;
    }

    public void setGoodsValue(Long goodsValue) {
        this.goodsValue = goodsValue;
    }

    public Long getGoodsValue() {
        return goodsValue;
    }

    public void setWaybillStatus(Integer waybillStatus) {
        this.waybillStatus = waybillStatus;
    }

    public Integer getWaybillStatus() {
        return waybillStatus;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }


    public Long getFreight() {
        return freight;
    }

    public void setFreight(Long freight) {
        this.freight = freight;
    }

    public Long getPremium() {
        return premium;
    }

    public void setPremium(Long premium) {
        this.premium = premium;
    }

    public Long getHandlingFee() {
        return handlingFee;
    }

    public void setHandlingFee(Long handlingFee) {
        this.handlingFee = handlingFee;
    }

    public Long getDistance() {
        return distance;
    }

    public void setDistance(Long distance) {
        this.distance = distance;
    }

    public Date getEstimatedArriveTime() {
        return estimatedArriveTime;
    }

    public void setEstimatedArriveTime(Date estimatedArriveTime) {
        this.estimatedArriveTime = estimatedArriveTime;
    }

    public String getRemarks() {
        return remarks;
    }


    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("waybillId", getWaybillId())
                .append("waybillNumber", getWaybillNumber())
                .append("senderId", getSenderId())
                .append("senderName", getSenderName())
                .append("senderMobile", getSenderMobile())
                .append("senderAddr", getSenderAddr())
                .append("receiverId", getReceiverId())
                .append("receiverName", getReceiverName())
                .append("receiverMobile", getReceiverMobile())
                .append("receiverAddr", getReceiverAddr())
                .append("deliveryTime", getDeliveryTime())
                .append("isNeedCollectPayment", getIsNeedCollectPayment())
                .append("refundType", getRefundType())
                .append("payType", getPayType())
                .append("isNeedMovingService", getIsNeedMovingService())
                .append("reduceFund", getReduceFund())
                .append("payment", getPayment())
                .append("goodsWeight", getGoodsWeight())
                .append("goodsVolume", getGoodsVolume())
                .append("containsFragileGoods", getContainsFragileGoods())
                .append("goodsValue", getGoodsValue())
                .append("waybillStatus", getWaybillStatus())
                .append("freight", getFreight())
                .append("premium", getPremium())
                .append("handlingFee", getHandlingFee())
                .append("distance", getDistance())
                .append("estimatedArriveTime", getEstimatedArriveTime())
                .append("remarks", getRemarks())
                .append("deleted", getDeleted())
                .append("createdBy", getCreatedBy())
                .append("createdTime", getCreatedTime())
                .append("updatedBy", getUpdatedBy())
                .append("updatedTime", getUpdatedTime())
                .toString();
    }
}
